/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;

import java.util.ArrayList;
import java.util.List;
import Model.User;
import xmlreader.UserReader;
import xmlwriter.UserWriter;

/**
 *
 * @author Oscar
 */
public class UserDAO {


    private static UserDAO instance = null;
    private List<User> users;

    
    private UserDAO() {
        
        load();
    }

    public static UserDAO getInstance()
    {
        if (instance == null)
            instance = new UserDAO();

        return instance;
    }

    /**
     * Verifica que un usuario este registrado
     *
     * @param nickname Nombre de usuario
     * @param password Clave de un Usuario
     * @return
     */
    public boolean Exist(String nickname, String password) {

        for (User user : this.users) {

            if (user.getNickname().equalsIgnoreCase(nickname)
                    && user.getPassword().equalsIgnoreCase(password)) {

                return true;
            }

        }

        return false;
    }

    /**
     * Elimina un usuario
     *
     * @param nickname Nombre de usuario
     * @param password Clave de un Usuario
     * @return
     */
    public boolean Delete(String nickname, String password) {

        this.users.remove(new User(nickname,password));
        commit();

        return true;
    }

    /**
     * Crea un usuario nuevo
     *
     * @param nickname Nombre de usuario
     * @param password Clave de un Usuario
     */
    public boolean createUser(String nickname, String password) {

        this.users.add(new User(nickname, password));
        commit();
        
        return true;
    }

    /**
     * Guarda los cambios hechos
     */
    public void commit() {

        //writing xml file

        UserWriter writer = new UserWriter();

        writer.setFile("users.xml");

        try{

            writer.saveConfig(this.users);
        }
        catch(Exception e) {

        }
    }

    /**
     * Carga los Datos para tenerlos disponibles
     */
    public void load() {

        //reading xml file
        UserReader reader = new UserReader();

        this.users = reader.readConfig("users.xml");
    }
}
